package br.unicamp.ic.sgct.client.aplicacao.trabalho;

import br.unicamp.ic.sgct.client.aplicacao.comum.BaseListener;
import br.unicamp.ic.sgct.client.dominio.exception.InfraException;
import br.unicamp.ic.sgct.client.dominio.to.TrabalhoTO;

/**
 * Responsavel por criar integracao entre as Interfaces GWT-RPC e as Screen
 * 
 * @author arthur
 */
public interface TrabalhoListener extends BaseListener {
	/**
	 * As interfaces Handler sao implementadas nas Classes Screen e utilizadas
	 * nas classes que implementam as interfaces Listeners para informar quais
	 * sao as acoes que devem ser executadas apos o retorno da resposta do
	 * servidor (comunicacao assincrona)
	 */
	public interface HandlerSubmeterTrabalho {
		public void handleSucesso(final TrabalhoTO retorno);

		public void handleErro(Throwable caught);
	}

	/**
	 * 
	 * @return List<ConferenciaTO>
	 * 
	 * @throws InfraException
	 * @throws Exception
	 */
	public abstract void submeterTrabalho(TrabalhoTO to,
			HandlerSubmeterTrabalho handler);

}